package Example;

import java.io.File;
import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
//        查找文件上的文件位置
//        给定一个文件名 去指定的目录中进行搜索
//        找到文件名匹配的结果 打印出完整的路径

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要搜索的文件名: ");
        String fileName = scanner.next();
        System.out.println("请输入要搜索的目录: ");
        String rootPath = scanner.next();
        scanner.close();

        File rootFile = new File(rootPath);

        if (!rootFile.isDirectory()){
            System.out.println("输入的目录有误! ");
            return;
        }

//        由于目录是树形结构 N叉树 因此采用递归的方式来搜索  树的遍历
        scanDir(rootFile,fileName); // 参数是递归的起点以及要递归搜索的文件名
    }

    private static void scanDir(File rootFile, String fileName) {
//        1.把所有的文件目录都列出来
        File[] files = rootFile.listFiles();
        if (files == null){
//            空目录
            return;
        }

//        遍历 files 判定每个file 是文件还是目录
        for (File f :files){
            System.out.println("当前遍历到: "+f.getAbsolutePath());
            if (fileName.equals(f.getName())){
//                如果是普通文件 直接判断是否是要搜索的文件
                System.out.println("找到了符合要求的文件! "+f.getAbsolutePath());
            } else if (f.isDirectory()) {
//                如果是目录文件 要进行进一步的递归
                scanDir(f,fileName);
            }
        }
    }
}
